package com.xiaoshuidi.cloud.module.iot.dal.model.callback;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

/**
 * @author Carl
 * create 2020/05/14
 * email Carl.Sun@ixiaoshuidi.com
 **/
@Data
public class GuoJiaDeviceCallbackReqVO {

    /**
     * 校验码
     */
    @Schema(description = "校验码")
    private String validateCode;

    /**
     * 校验因子
     */
    @Schema(description = "校验因子")
    private String factor;

    /**
     * 推送次数，默认：1
     */
    @Schema(description = "推送次数")
    private Integer pushTimes;

    /**
     * 业务流水单号
     */
    @Schema(description = "业务流水单号")
    private String businessId;

    /**
     * 门锁编码
     */
    @Schema(description = "门锁编码")
    private String lockNo;

    /**
     * 密码类型
     * 一代协议433 门锁：在线自定义密码：[1-29]
     * 蓝牙门锁：在线自定义密码：[81-100]
     * 二代协议433 门锁：在线自定义密码：[1-29]
     */
    @Schema(description = "密码类型")
    private Integer pwdNo;

    /**
     * 密码使用人手机号
     */
    @Schema(description = "密码使用人手机号")
    private String pwdUserMobile;

    /**
     * 事件描述:
     * 密码设置成功：PUSH_LOCK_SET_PWD_SUCCESS
     * 密码设置失败：PUSH_LOCK_SET_PWD_FAIL
     * 电池电量低： PUSH_LOCK_POWRE_LOW
     * 电池电量恢复：PUSH_LOCK_POWRE_RECOVERY
     * 开锁提醒： PUSH_OPEN_LOCK
     * 门锁离线提醒：PUSH_LOCK_OFFLINE
     * 门锁在线提醒：PUSH_LOCK_ONLINE
     */
    @Schema(description = "事件描述")
    private String event;

    /**
     * 辅助信息
     */
    @Schema(description = "辅助信息")
    private String extra;

    /**
     * 电量推送时间
     */
    @Schema(description = "电量推送时间")
    private Long time;

    /**
     * 电量
     */
    @Schema(description = "电量")
    private Double power;

    /**
     * 开门方式 取值：
     * 0：APP 蓝牙开门
     * 1：自定义密码开门
     * 2：一次性密码开门
     * 3：远程开门
     * 4：时效密码开门
     * 5：门禁卡开门
     * 6：物理钥匙开门/内把手开门
     * 7、指纹开门
     * 8、关门
     * 9、临时密码开门
     */
    @Schema(description = "开门方式")
    private Integer opWay;

    /**
     * 门状态 0：门开，1：门关
     */
    @Schema(description = "门状态")
    private Integer opType;

    /**
     * 开锁人姓名
     */
    @Schema(description = "开锁人姓名")
    private String userName;

    /**
     * 开锁人手机号
     */
    @Schema(description = "开锁人手机号")
    private String userMobile;

}
